/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import java.awt.Toolkit;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import vista.PrincipalVista;

/**
 *
 * @author Rodrigo Martínez
 */
public class GeneradorReportesControlador {
    private PrincipalVista principal;
    private File archivo;
    
    public GeneradorReportesControlador(PrincipalVista principal){
        this.principal = principal;
    }
    
    public void generarReporteGeneral(){
        DefaultTableModel dtm = (DefaultTableModel) principal.generalTable.getModel();
        if(esValido(dtm)){
            ArrayList<String> puntosArreglados = ArreglaPuntos(dtm);
            try {            
                PrintWriter out = new PrintWriter(new FileWriter(archivo+".txt"));
                String s="";
                //aqui se crea el cuerpo del archivo a crear
                for(int i=0; i< puntosArreglados.size(); i++){
                    s += puntosArreglados.get(i);
                }
                out.println(s);
                out.close();
                JOptionPane.showMessageDialog(principal, "Archivo creado", "Error", 
                        JOptionPane.INFORMATION_MESSAGE);
            }catch (IOException e) {
                JOptionPane.showMessageDialog(principal, "Error al guardar", "Error", 
                        JOptionPane.ERROR_MESSAGE);
                Toolkit.getDefaultToolkit().beep();
                System.out.println("Error " + e);
            }//fin catch
        }        
    }
    
    public void generarReporteUsuIPMAC(){
        DefaultTableModel dtm = (DefaultTableModel) principal.usuIPMACTable.getModel();
        if(esValido(dtm)){
            ArrayList<String> puntosArreglados = ArreglaPuntos(dtm);
            try {            
                PrintWriter out = new PrintWriter(new FileWriter(archivo+".txt"));
                String s="";
                //aqui se crea el cuerpo del archivo a crear
                for(int i=0; i< puntosArreglados.size(); i++){
                    s += puntosArreglados.get(i);
                }
                out.println(s);
                out.close();
                JOptionPane.showMessageDialog(principal, "Archivo creado", "Error", 
                        JOptionPane.INFORMATION_MESSAGE);
            }catch (IOException e) {
                JOptionPane.showMessageDialog(principal, "Error al guardar", "Error", 
                        JOptionPane.ERROR_MESSAGE);
                Toolkit.getDefaultToolkit().beep();
                System.out.println("Error " + e);
            }//fin catch
        }
    }
    
    public void generarReporteVLANS(){
        DefaultTableModel dtm = (DefaultTableModel) principal.vlansTable.getModel();
        if(esValido(dtm)){
            ArrayList<String> puntosArreglados = ArreglaPuntos(dtm);
            try {            
                PrintWriter out = new PrintWriter(new FileWriter(archivo+".txt"));
                String s="";
                //aqui se crea el cuerpo del archivo a crear
                for(int i=0; i< puntosArreglados.size(); i++){
                    s += puntosArreglados.get(i);
                }
                out.println(s);
                out.close();
                JOptionPane.showMessageDialog(principal, "Archivo creado", "Error", 
                        JOptionPane.INFORMATION_MESSAGE);
            }catch (IOException e) {
                JOptionPane.showMessageDialog(principal, "Error al guardar", "Error", 
                        JOptionPane.ERROR_MESSAGE);
                Toolkit.getDefaultToolkit().beep();
                System.out.println("Error " + e);
            }//fin catch
        }
    }
    
    private ArrayList<String> ArreglaPuntos(DefaultTableModel dtm){        
        ArrayList<String> filas = new ArrayList<String>();        
        //Se obtienen todos los datos de la tabla
        for(int i =0; i < dtm.getRowCount(); i++){
            String fila = "";
            for(int e = 0; e < dtm.getColumnCount(); e++){                
                fila += dtm.getValueAt(i, e).toString().trim() + ",";               
            }
            filas.add(fila.substring(0, fila.length()-1)+"\n");
        }
        return filas;
    }
    
    private boolean esValido(DefaultTableModel dtm){        
        //limite para leer
        int tamFilas;
        if(dtm.getRowCount() == 0){
            return false;
        }
        if(dtm.getRowCount() > 1)
            tamFilas = dtm.getRowCount() - 1;
        else
            tamFilas = dtm.getRowCount();
        //Empieza la comprobacion
        try{
            for(int i =0; i < tamFilas; i++){
                for(int e = 0; e < dtm.getColumnCount(); e++){
                    if(dtm.getValueAt(i, e).toString().equals("") || 
                            dtm.getValueAt(i, e) == null){
                        dtm.setValueAt("null", i, e);
                    }
                }
            }
        }catch(Exception e){
            System.out.println("faltan uno o mas datos");
            return false;
        }
        return true;
    }

    public void setArchivo(File archivo) {
        this.archivo = archivo;
    }
    
   
}
